<?php
declare(strict_types=1);

namespace app\middleware;

use app\model\Merchant;
use think\Request;
use Closure;

class MerchantAuth extends BaseAuth
{
    /**
     * 处理请求
     */
    public function handle(Request $request, Closure $next)
    {
        // 验证 JWT token
        [$valid, $info] = $this->validateToken($request);
        if (!$valid) {
            return $this->error($info, 401);
        }

        // 获取商家信息
        $merchant = Merchant::where('id', $info['id'])->find();
        if (!$merchant) {
            return $this->error('商家不存在', 401);
        }

        // 检查商家状态
        if (!$merchant->isAvailable()) {
            return $this->error('商家账号已被禁用或未通过审核', 403);
        }

        // 将商家信息注入到 request 中
        $request->merchant = $merchant;
        
        return $next($request);
    }

    /**
     * 获取守卫名称
     */
    protected function getGuard(): string
    {
        return 'merchant';
    }
} 